package mx.com.asteca.vista;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;

import org.apache.commons.collections.CollectionUtils;

import mx.com.asteca.comun.Constantes;
import mx.com.asteca.comun.dto.PersonaDTO;
import mx.com.asteca.fachada.FachadaException;
import mx.com.asteca.fachada.PersonaFachada;

@ManagedBean(name = Constantes.BEAN_ADMIN_CONFIG)
@ViewScoped
public class AdministrativoConfigControlador extends BaseController{

	private final static String modulo = Constantes.MODULO_ADMIN_CONFIG;
	
	private List<PersonaDTO> listItems;
	private PersonaDTO itemSelected;
	@ManagedProperty("#{personaFachadaImpl}")
	private transient PersonaFachada fachadaPersona;
	
	private void initListItems(){
		if(CollectionUtils.isEmpty(listItems)){
			try {
				listItems = fachadaPersona.findBloqueados();
			} catch (FachadaException e) {
				super.addErrorMessage(Constantes.MESSAGE_TITLE_ERROR, Constantes.ERROR_OBTENIENDO_LISTA_CATALOGO);
			}
		}
	}
	
	public void desbloquea(){
		try{
			if(itemSelected == null){
				return;
			}
			int idPersona = itemSelected.getIdPersona();
			fachadaPersona.desbloqueaUsuario(idPersona);
			super.addInfoMessage(Constantes.ACCION_UPDATE_REGISTRO_EXITOSO_MENSAJE);
			super.addBitacora("USUARIO DESBLOQUEADO", "USUARIO DESBLOQUEADO EXITOSAMENTE:"+idPersona);
			listItems = null;
			initListItems();
		}catch(FachadaException e){
			super.addBitacora("DESBLOQUEAR USUARIOS", "EL USUARIO :"+itemSelected.getIdPersona()+": NO SE PUDO DESBLOQUEAR");
			super.addErrorMessage(Constantes.MESSAGE_TITLE_ERROR, Constantes.ERROR_UPDATE_REGISTRO);
		}
	}
	
	@Override
	String getModulo() {
		return modulo;
	}

	/**
	 * @return the listItems
	 */
	public List<PersonaDTO> getListItems() {
		initListItems();
		return listItems;
	}

	/**
	 * @param listItems the listItems to set
	 */
	public void setListItems(List<PersonaDTO> listItems) {
		this.listItems = listItems;
	}

	/**
	 * @return the itemSelected
	 */
	public PersonaDTO getItemSelected() {
		return itemSelected;
	}

	/**
	 * @param itemSelected the itemSelected to set
	 */
	public void setItemSelected(PersonaDTO itemSelected) {
		this.itemSelected = itemSelected;
	}

	/**
	 * @return the fachadaPersona
	 */
	public PersonaFachada getFachadaPersona() {
		return fachadaPersona;
	}

	/**
	 * @param fachadaPersona the fachadaPersona to set
	 */
	public void setFachadaPersona(PersonaFachada fachadaPersona) {
		this.fachadaPersona = fachadaPersona;
	}

}
